﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

namespace Controladora.Seguridad
{
    public class CUGestionarusuarios
    {
        private static CUGestionarusuarios Instancia;
        public static CUGestionarusuarios ObtenerInstancia()
        {
            if (Instancia == null)
            {
                Instancia = new CUGestionarusuarios();
            }
            return Instancia;
        }

        private CUGestionarusuarios()
        {
            //Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            //Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia();
            //Servicios.Conexion.ObtenerInstancia().Desconectar();
            
        }

        public ReadOnlyCollection<Entidades.Seguridad.Usuario> ConsultarUsuarios()
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Usuario> ColUsuario = Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia().ListarUsuarios();
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColUsuario;
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }

        public ReadOnlyCollection<Entidades.Seguridad.Usuario> ConsultarUsuarios(string nombapell,string idGrupo,string estado)
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Usuario> ColUsuario = Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia().ListarUsuarios(nombapell,idGrupo,estado);
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColUsuario;
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }

        public bool AgregarUsuario(Entidades.Seguridad.Usuario ousuario)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
            bool res = Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia().AgregarUsuario(ousuario);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            return res;
        }

        public bool EliminarUsuario(Entidades.Seguridad.Usuario ousuario)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
            bool res = Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia().EliminarUsuario(ousuario);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            return res;
        }

        public void ModificarUsuario(Entidades.Seguridad.Usuario ousuario)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
            Modelo.Seguridad.CatalogoUsuarios.ObtenerInstancia().ModificarUsuario(ousuario);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");        
        }

        public ReadOnlyCollection<Entidades.Seguridad.Grupo> ConsultarGrupos()
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Seguridad");
                ReadOnlyCollection<Entidades.Seguridad.Grupo> ColGrupos = Modelo.Seguridad.CatalogoGrupos.ObtenerInstancia().ListarGrupos();
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
                return ColGrupos;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Seguridad");
            }
        }

        
    }

}
